home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus 1995 #5 & #6
/
Amiga Plus CD - 1995 - No. 5 and 6.iso
/
pd
/
serien
/
purity
/
nr.15
/
kickpascal-programme
/
gbu
/
gbu2.p
< prev
next >
Wrap
Text File
|
1995-04-22
|
4KB
|
136 lines
{
**********************************************************************
gbu.p © 10.05.93 by
Røgersøft
Michael Klein
Am Wasserturm 6,
67346 Speyer ( ab 1.7.93 )
Programmiert für PURITY der FD-Reihe für Pascaluser.
Das Programm dürft Ihr in eigenen Programmen benutzen, solange
diese nicht kommerziell oder militärisch genutzt werden. Außerdem
muß dieses Programm dann auf einer Diskette der Purity-Reihe ver-
öffentlicht werden.
************************************************************************
}
PROGRAM gbudemo; { V0.01 }
USES Intuition;
TYPE strtyp=STRING;
VAR win:p_window;
MessagePtr1: p_IntuiMessage;
aktgad:p_gadget;
toggler,ende:BOOLEAN;
ok:LONG;
gad: GADGET;
it1:Intuitext;
{********************************************************************}
PROCEDURE umrandung(wo:p_window,c1,c2,x,y,b,h:INTEGER);
TYPE umrandungstyp=ARRAY[0..9] OF INTEGER;
VAR Feld1,feld2:umrandungstyp;
border1,border2:BORDER;
BEGIN
feld1:=umrandungstyp(1,1,1,h-2,0,h-1,0,0,b-2,0);
feld2:=umrandungstyp(b-2,h-2,b-2,1,b-1,0,b-1,h-1,1,h-1);
Border1:=Border(x,y,c1,0,0,5,^Feld1,^Border2);
Border2:=Border(x,y,c2,0,0,5,^Feld2,Nil);
drawborder(wo^.rport,^Border1,0,0);
END;
{********************************************************************}
PROCEDURE zeichnetext(c1,c2:SHORT,wo:p_window,x,y:INTEGER,text:strtyp);
VAR it1,it2:INTUITEXT;STATIC;
BEGIN
it1:=INTUITEXT(c1,0,JAM2,1,1,NIL,text,^it2);
it2:=INTUITEXT(c2,0,0,0,0,NIL,text,NIL );
PRINTITEXT(wo^.rport,^it1,x,y);
END;
{********************************************************************}
PROCEDURE gbu(wo:p_window,was:p_gadget,c:CHAR);
VAR it:intuitext;STATIC;
x,y:LONG;STATIC;
stelle:INTEGER;
ok:BOOLEAN;
BEGIN
umrandung(wo,2,1,was^.Leftedge,was^.Topedge,was^.Width,was^.height);
IF (was^.Gadgettext<>NIL) THEN
BEGIN
stelle:=POS(c,was^.gadgettext^.itext);
If stelle>0 THEN
BEGIN
stelle:=stelle-1;
x:=was^.Gadgettext^.leftedge+was^.Leftedge+8*stelle;
y:=was^.Gadgettext^.topedge+was^.Topedge+1;
it:=INTUITEXT(1,0,0,0,0,NIL,'_',NIL );
PRINTITEXT(wo^.rport,^it,x,y);
END;
END;
END; { OF PROCEDURE gbu }
{********************** Hauptprogramm **************************}
BEGIN
ende:=FALSE;
Win:=Open_Window(50,50,392,45,1,_CLOSEWINDOW+GADGETUP+GADGETDOWN+Vanillakey,
WINDOWDRAG+WINDOWDEPTH+WINDOWCLOSE+ACTIVATE,
'gbuDemo V0.01 © 10.05.93 by Røgersøft',NIL,50,50,640,256);
{ Vanillakeyflag nicht vergessen}
it1:=INTUITEXT(1,0,0,140,3,NIL,'Klick mich !',NIL);
gad:=Gadget(NIL,20,12,352,14,GADGHCOMP,RELVERIFY,$0001,
NIL,NIL,^it1,0,NIL,1,NIL);
gbu(win,^gad,'i'); { THE magic PROCEDURE !!! } {umrandung+"i" unterstreichen}
ok:=ADDGADGET(win,^gad,0);
REFRESHGADGETS(Win^.firstgadget,Win,NIL);
REPEAT
MessagePtr1:=p_Intuimessage(Waitport(Win^.Userport));
MessagePtr1:=p_Intuimessage(GetMsg(Win^.Userport));
CASE MessagePtr1^.class OF
_CLOSEWINDOW: ende:=TRUE;
GADGETUP,GADGETDOWN:
BEGIN
aktgad:=messageptr1^.iaddress;
CASE aktgad^.gadgetID OF
1: BEGIN
IF TOGGLER THEN zeichnetext(1,2,win,150,30,'Alles klar ???')
ELSE zeichnetext(1,3,win,150,30,'Alles klar ???');
TOGGLER:=NOT TOGGLER;
END;
OTHERWISE;
END;
END; {OF Gadgetup/Gadgetdown}
VANILLAKEY:
CASE messageptr1^.code OF
105:BEGIN { i }
IF TOGGLER THEN zeichnetext(1,2,win,150,30,'Alles klar ???')
ELSE zeichnetext(1,3,win,150,30,'Alles klar ???');
TOGGLER:=NOT TOGGLER;
END
27,81,113: ende:=TRUE; { ESC,q,Q }
OTHERWISE;
END; { OF Vanillakey }
OTHERWISE;
END; {OF CASE}
ReplyMsg(p_Message(MessagePtr1));
UNTIL ende;
Closewindow(Win);
END.